#include<bits/stdc++.h>
#define pii pair<int,int>
#define fi first
#define se second
#define pb emplace_back
using namespace std;

int n,m;bool fl=0;
vector<pii> v;
int main(){
	freopen("bishop.in","r",stdin);
	freopen("bishop.out","w",stdout);
	cin.tie(nullptr)->sync_with_stdio(false);
	int i;
	cin>>n>>m;if(n>m) swap(n,m),fl=1;
	if(n==m){
		for(i=1;i<=n;i++) v.pb(1,i);
		for(i=2;i<n;i++) v.pb(n,i);
	}
	else{
		bool a=n&1,b=m&1;
		if(a&&b){
			for(i=1;i<=n;i++) v.pb(i,1);
			for(i=1;i<=n;i++) v.pb(i,m);
			for(i=(n+1)/2+1;i<=m-(n+1)/2;i++) v.pb((n+1)/2,i);
		}
		else if(!a&&b){
			for(i=1;i<=n;i++) v.pb(i,1);
			for(i=1;i<=n;i++) v.pb(i,m);
			for(i=n/2+1+1;i<=m-n/2-1;i+=2) v.pb(n/2,i),v.pb(n/2+1,i);
		}
		else if(a&&!b){
			for(i=1;i<=n;i++) v.pb(i,1);
			for(i=1;i<=n;i++) v.pb(i,m);
			for(i=(n+1)/2+1;i<=m-(n+1)/2;i++) v.pb((n+1)/2,i);
		}
		else{
			for(i=1;i<=n;i++) v.pb(i,1);
			for(i=1;i<=n;i++) v.pb(i,m);
			for(i=n/2+1+1;i<=m-n/2-1;i+=2) v.pb(n/2,i),v.pb(n/2+1,i);
		}
	}
	cout<<v.size()<<'\n';
	for(auto p:v) cout<<(fl?p.se:p.fi)<<' '<<(fl?p.fi:p.se)<<'\n';
	return 0;
}